Data systems typically include one or more host computers (e.g., servers) and one or more storage systems (e.g., disk arrays) that store data used by applications executing on the host computers. The present invention will be described with reference to storage systems taking form in disk arrays, it being understood that the term storage systems should not be limited thereto. Each disk array typically includes several disk drives that store data. Applications access data on the disk drives via logical data objects. More particularly, applications executing on host computers usually access data stored in logical data objects, each of which directly or indirectly represent an aggregation of physical data objects (e.g., physical memory blocks, each of which stores or is configured to store 512 bytes of data) on disk drives. Logical data objects may take many different forms such as file systems, data volumes, etc. The present invention will be described with reference to one or more host computers accessing and/or processing data stored in one or more data volumes, it being understood that the present invention should not be limited thereto.
FIG. 1A illustrates relevant components of an example data system 10, which includes a host computer 12 coupled to a storage area network (SAN) 14. The SAN 14 includes a pair of disk arrays 20 and 22 accessible by one or more applications executing on host computer 12 via communication link 16. Host computer 12 includes a volume manager 24 in data communication with a mapping system 26. Volume manager 24 and mapping system 26 are shown as separate entities for ease of explanation. It is noted, however, the mapping system 26 may be a component of the volume manager 24 in an alternative embodiment. Volume managers and mapping systems, in one embodiment, may take form in instructions executing on one or more processors of a host computer.
Volume manager 24 and/or mapping system 26 operate to logically aggregate physical data objects (e.g., physical memory blocks) within disk arrays 20 or 22 to create one or more data volumes. For example, volume manager 24 and/or mapping system 26 logically aggregates physical memory blocks within disk array 20 to create data volume A, which is graphically represented in FIG. 1A. As shown, data volume A consists of n logical data blocks, each of which stores data of, for example, files of a file system. While it is said that a logical data block of a volume stores data, in reality, the data is stored in a physical memory block of a disk array allocated thereto. Mapping system 26 creates and maintains a volume translation map (hereinafter translation map) that maps the n data blocks of volume A to n physical memory blocks, respectively, within disk array 20. Volume manager 24 uses the translation map when implementing a request to read data from or write data to data blocks of volume A. Occasionally, data blocks of volume A are reallocated to different physical memory blocks of array 20. When this happens, mapping system 26 updates the translation map for volume A accordingly, to insure the proper physical memory block is accessed when volume manger 24 implements a request to read data from or write data to a particular logical block of volume A. It is noted that while volume A is represented in FIG. 1A as a set of contiguous logical data blocks, the logical data blocks may be mapped to noncontiguous physical memory blocks within disk array 20.
Volume manager 24 can implement a request generated by, for example, a file system manager (not shown) to read data from or write data to one or more data blocks within volume A. For purposes of explanation, it will be understood that volume manager 24 receives requests to read data from or write data to a single block of volume A, it being understood that the present invention should not be limited thereto. Suppose volume manager 24 receives a request to write data D to block x of volume A. Volume manager, in response to receiving the request, accesses the translation map for volume A to identify the physical memory block in array 20 mapped thereto where data D should be physically stored. Using one or more input/output transactions, the current contents of the logical block are copied from the physical memory block to cache memory within host computer 12. Some or all of the contents of the cached data is overwritten with data D in accordance with the received write request. Eventually, the contents of the physical memory block are replaced with the modified cached data, and the write request is considered complete.